<?php
class UsersController extends AppController {

	var $name = 'Users';
	var $uses = array('User', 'UsersEquiposOperativo');
	var $helpers = array('Access');

	function index() {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
				
		$this->User->recursive = 0;
		
		$title = array();

		if(isset($this->passedArgs['Search.keywords'])) {
			$keywords = $this->passedArgs['Search.keywords'];
			$this->paginate['conditions'][] = array(
				'OR' => array(
					'User.nombre_completo LIKE' => "%$keywords%",
					'User.username LIKE' => "%$keywords%",						
				)
			);
			$this->data['Search']['keywords'] = $keywords;
			$title[] = __('Keywords',true).': '.$keywords;
		}

		$users = $this->paginate();
		
		// set title
		$title = implode(' | ',$title);
		$title = (isset($title)&&$title)?$title:__('Usuarios',true);
				
		$this->set(compact('users'));
	}

	function getlist($eo = null, $group_id = null) {			
		if (!$eo && !$group_id) {
			//Ninguno de los dos;
			return $this->User->find('all', array('order'=>'User.group_id ASC'));
		}else{
			//Usuarios con el mismo EO			
			//Si es coordinador
			$roles = array();
			if($group_id=="6")
				$roles = array(3,4,5,7,8);		
			else//Es Asesor
				$roles = array(2);
						
			$usuarios = $this->UsersEquiposOperativo->find('all',array('fields'=>array('UsersEquiposOperativo.user_id'), 
															  'conditions'=>array('UsersEquiposOperativo.equipos_operativo_id'=>$eo, 
															  'AND'=>array('UsersEquiposOperativo.group_id'=>$roles))));
			return $usuarios; 
		}
	}
	
	function view($id = null) {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		if (!$id) {
			$this->Session->setFlash(__('Invalid user', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('user', $this->User->read(null, $id));
		$user_nombre = $this->User->getNombreCompleto($id);
		$this->set('nombre_completo',$user_nombre);
		
	}

	function menu(){
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		$group_id = $this->Access->getMy('group_id');
		$user_id = $this->Access->getMy('id');
		$genero = $this->Access->getMy('genero');
		$nombre = $this->Access->getMy('nombre_completo');
		
		$datetime = date('Y-m-d H:i:s');							
		$this->User->id = $user_id;
		
		$this->User->saveField('ultimo_acceso', $datetime);
		
		$this->set(compact('group_id','user_id', 'genero', 'nombre'));
	}
	
	function add() {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		if (!empty($this->data)) {
			$this->User->create();
			
			if ($this->User->save($this->data)) {				

				$registro['UsersEquiposOperativo']= array('user_id'=>$this->User->id,'equipos_operativo_id'=>$this->data['User']['equipos_operativo_id'],
										 'group_id'=>$this->data['User']['group_id']);				
					
				$this->UsersEquiposOperativo->create();				
				$this->UsersEquiposOperativo->save($registro);				
				
				$this->Session->setFlash(__('El usuario ha sido guardado', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('El usuario no ha sido guardado. Intente de nuevo.', true));
			}
		}
		$groups = $this->User->Group->find('list', array('fields' => array('Group.id', 'Group.nombre')));	
		$eOs = $this->User->EquiposOperativo->find('list',array('fields' => array('EquiposOperativo.id', 'EquiposOperativo.zona_id')));		
		$equiposOperativos = array();
		foreach( $eOs as $key => $eo ){			
				$municipio_zona = $this->User->EquiposOperativo->Zona->read('municipio_id', $eo);							
				$nombreMunicipio = $this->User->EquiposOperativo->Zona->Municipio->read('nombre', $municipio_zona['Zona']['municipio_id']);
				$equiposOperativos[$key] = $nombreMunicipio['Municipio']['nombre'];
				unset($eo);							
		}
		
		$this->set(compact('groups', 'equiposOperativos'));
	}

	function edit($id = null){
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid user', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {						
			$user=$this->User->read(null, $id);
			$actual = $user['User']['password'];			
			$nueva = $this->data['User']['passwords'];
			
			if($actual != $nueva){
				$this->data['User']['password']=$this->Auth->password($nueva);
			}
			
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Perfil Actualizado', true));				
				$this->redirect(array('action' => 'menu'));
			} else {
				$this->Session->setFlash(__('El perfil no pudo ser actualizado. Intente de nuevo.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}
		$groups = $this->User->Group->find('list', array("fields"=>array('Group.id', 'Group.nombre')));
		
		//EO's
		$eOs = $this->User->EquiposOperativo->find('list', array('fields' => array('EquiposOperativo.id', 'EquiposOperativo.zona_id')));
		$equiposOperativos = array();
		foreach( $eOs as $key => $eo ){
			$municipio_zona = $this->User->EquiposOperativo->Zona->read('municipio_id', $eo);
			$nombreMunicipio = $this->User->EquiposOperativo->Zona->Municipio->read('nombre', $municipio_zona['Zona']['municipio_id']);
			$equiposOperativos[$key] = $nombreMunicipio['Municipio']['nombre'];
			unset($eo);
		}
		$group_id = $this->Access->getMy('group_id');
		$user = $this->data;		
		$this->set(compact('groups','group_id','user'));
	}

	function delete($id = null) {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for user', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->User->delete($id)) {
			$this->Session->setFlash(__('User deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('User was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
	
	function login() {		
		if ($this->Session->read('Auth.User')) {				
				$this->Session->setFlash('Ya tienes iniciada la sesion!');
				$this->redirect(array('controller'=>'pages','action'=>'entrada'));
		}	
	}
	 
	function logout() {
		$datetime = date('Y-m-d H:i:s');
		$this->User->id = $this->Access->getMy('id');
		$this->User->saveField('ultimo_acceso', $datetime);
	    $this->Session->setFlash('Sesion cerrada correctamente');
		$this->redirect($this->Auth->logout());		
	}
	/*
	function beforeFilter() {
	    parent::beforeFilter(); 
	    $this->Auth->allowedActions = array('login', 'logout');
	}
	*/
	
	function search() {
		// the page we will redirect to
		$url['action'] = 'index';
		
		// build a URL will all the search elements in it
		// the resulting URL will be 
		// example.com/cake/posts/index/Search.keywords:mykeyword/Search.tag_id:3
		foreach ($this->data as $k=>$v){ 
			foreach ($v as $kk=>$vv){ 
				$url[$k.'.'.$kk]=$vv; 
			} 
		}

		// redirect the user to the url
		$this->redirect($url, null, true);
	}

	
}
?>